<!DOCTYPE html>
<!--

 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.

-->


<html>
  <head>
    <meta name="viewport" content="width=device-width,height=device-height,user-scalable=no,maximum-scale=1.0,initial-scale=1.0" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <!-- ISO-8859-1 -->
    <title>Cordova Mobile Spec</title>
    <link rel="stylesheet" href="../master.css" type="text/css" media="screen" title="no title" charset="utf-8">
    <script type="text/javascript" charset="utf-8" src="../cordova-incl.js"></script>      
    <script type="text/javascript" charset="utf-8" src="./index.js"></script>      
  </head>
  <body id="stage" class="theme">
  
    <h1>InAppBrowser</h1>
    <div id="info">
        Make sure http://www.google.com is white listed. </br>
        Make sure http://www.apple.com is not in the white list.</br>  In iOS, starred <span style="vertical-align:super">*</span> tests will put the app in a state with no way to return.  </br>
        <h4>User-Agent: <span id="user-agent"> </span></h4>
    </div>
    <div class="btn small backBtn">Back</div>

    <h1>Local URL</h1>
    <div class="btn large openLocal">target = Default</div>
    Expected result: opens successfully in CordovaWebView.

    <p/>
    <div class="btn large openLocalSelf">target=_self</div>
    Expected result: opens successfully in CordovaWebView.

    <p/>
    <div class="btn large openLocalSystem">target=_system</div>
    Expected result: fails to open.

    <p/>
    <div class="btn large openLocalBlank">target=_blank</div>
    Expected result: opens successfully in InAppBrowser with locationBar at top.

    <p/>
    <div class="btn large openLocalRandomNoLocation">target=Random, location=no,disallowoverscroll=yes</div>
    Expected result: opens successfully in InAppBrowser without locationBar.

    <p/>
    <div class="btn large openLocalRandomToolBarBottom">target=Random, toolbarposition=bottom</div>
    Expected result: opens successfully in InAppBrowser with locationBar. On iOS the toolbar is at the bottom.

    <p/>
    <div class="btn large openLocalRandomToolBarTop">target=Random, toolbarposition=top</div>
    Expected result: opens successfully in InAppBrowser with locationBar. On iOS the toolbar is at the top.

    <p/>
    <div class="btn large openLocalRandomToolBarTopNoLocation">target=Random, toolbarposition=top,location=no</div>
    Expected result: opens successfully in InAppBrowser with no locationBar. On iOS the toolbar is at the top.

    <h1>White Listed URL</h1>

    <div class="btn large openWhiteListed">target=Default<span style="vertical-align:super">*</span></div>
    Expected result: open successfully in CordovaWebView to www.google.com.

    <p/>
    <div class="btn large openWhiteListedSelf">target=_self<span style="vertical-align:super">*</span></div>
    Expected result: open successfully in CordovaWebView to www.google.com.

    <p/>
    <div class="btn large openWhiteListedSystem">target=_system</div>
    Expected result: open successfully in system browser to www.google.com.

    <p/>
    <div class="btn large openWhiteListedBlank">target=_blank</div>
    Expected result: open successfully in InAppBrowser to www.google.com.

    <p/>
    <div class="btn large openWhiteListedRandom">target=Random</div>
    Expected result: open successfully in InAppBrowser to www.google.com.

    <p/>
    <div class="btn large openWhiteListedRandomNoLocation">target=Random, no location bar<span style="vertical-align:super">*</span></div>
    Expected result: open successfully in InAppBrowser to www.google.com with no location bar.

    <h1>Non White Listed URL</h1>

    <div class="btn large openNonWhiteListed">target=Default</div>
    Expected result: open successfully in InAppBrowser to apple.com (_self enforces whitelist).

    <p/>
    <div class="btn larg openNonWhiteListedSelf">target=_self</div>
    Expected result: open successfully in InAppBrowser to apple.com (_self enforces whitelist).

    <p/>
    <div class="btn large openNonWhiteListedSystem">target=_system</div>
    Expected result: open successfully in system browser to apple.com.

    <p/>
    <div class="btn large openNonWhiteListedBlank">target=_blank</div>
    Expected result: open successfully in InAppBrowser to apple.com.

    <p/>
    <div class="btn large openNonWhiteListedRandom">target=Random</div>
    Expected result: open successfully in InAppBrowser to apple.com.

    <p/>
    <div class="btn large openNonWhiteListedRandomNoLocation">target=Random, no location bar<span style="vertical-align:super">*</span></div>
    Expected result: open successfully in InAppBrowser to apple.com without locationBar.

    <h1>Page with redirect</h1>

    <div class="btn large openRedirect301">http://google.com</div>
    Expected result: should 301 and open successfully in InAppBrowser to www.google.com.

    <p/>
    <div class="btn large openRedirect302">http://goo.gl/pUFqg</div>
    Expected result: should 302 and open successfully in InAppBrowser to www.zhihu.com/answer/16714076.

    <h1>PDF URL</h1>

    <div class="btn large openPDF">Remote URL</div>
    Expected result: InAppBrowser opens. PDF should render on iOS.

    <p/>
    <div class="btn large openPDFBlank">Local URL</div>
    Expected result: InAppBrowser opens. PDF should render on iOS.

    <h1>Invalid URL</h1>

    <div class="btn large openInvalidScheme">Invalid Scheme</div>
    Expected result: fail to load in InAppBrowser.

    <p/>
    <div class="btn large openInvalidHost">Invalid Host</div>
    Expected result: fail to load in InAppBrowser.

    <p/>
    <div class="btn large openInvalidMissing">Missing Local File</div>
    Expected result: fail to load in InAppBrowser (404).

    <h1>CSS / JS Injection</h1>

    <div class="btn large openOriginalDocument">Original Document</div>
    Expected result: open successfully in InAppBrowser without text "Style updated from..."

    <p/> 
    <div class="btn large openCSSInjection">CSS File Injection</div>
    Expected result: open successfully in InAppBrowser with "Style updated from file".

    <p/>
    <div class="btn large openCSSInjectionCallback">CSS File Injection (callback)</div>
    Expected result: open successfully in InAppBrowser with "Style updated from file", and alert dialog with text "Results verified".

    <p/>
    <div class="btn large openCSSLiteralInjection">CSS Literal Injection</div>
    Expected result: open successfully in InAppBrowser with "Style updated from literal".

    <p/>
    <div class="btn large openCSSLiteralInjectionCallback">CSS Literal Injection (callback)</div>
    Expected result: open successfully in InAppBrowser with "Style updated from literal", and alert dialog with text "Results verified".

    <p/>
    <div class="btn large openScriptInjection">Script File Injection</div>
    Expected result: open successfully in InAppBrowser with text "Script file successfully injected".

    <p/>
    <div class="btn large openScriptInjectionCallback">Script File Injection (callback)</div>
    Expected result: open successfully in InAppBrowser with text "Script file successfully injected" and alert dialog with the text "Results verified".

    <p/>
    <div class="btn large openScriptLiteralInjection">Script Literal Injection</div>
    Expected result: open successfully in InAppBrowser with the text "Script literal successfully injected" .

    <p/>
    <div class="btn large openScriptLiteralInjectionCallback">Script Literal Injection (callback)</div>
    Expected result: open successfully in InAppBrowser with the text "Script literal successfully injected" and alert dialog with the text "Results verified".

    <h1>Open Hidden </h1>
    <div class="btn large openHidden">create hidden</div>
    Expected result: no additional browser window. Alert appears with the text "background window loaded".

    <p/>
    <div class="btn large showHidden">show hidden</div>
    Expected result: after first clicking on previous test "create hidden", open successfully in InAppBrowser to google.com.

    <p/>
    <div class="btn large closeHidden">close hidden</div>
    Expected result: no output. But click on "show hidden" again and nothing should be shown.

    <p/>
    <div class="btn large openHiddenShow">google.com not hidden</div>
    Expected result: open successfully in InAppBrowser to www.google.com

    <h1>Clearing Cache</h1>

    <div class="btn large openClearCache">Clear Browser Cache</div>
    Expected result: ?

    <p/>
    <div class="btn large openClearSessionCache">Clear Session Cache</div>
    Expected result: ?

    <h1>Video tag</h1>

    <div class="btn large openRemoteVideo">remote video</div>
    Expected result: open successfully in InAppBrowser with an embedded video that works after clicking the "play" button.

    <h1>Local with anchor tag</h1>

    <div class="btn large openAnchor1">Anchor1</div>
    Expected result: open successfully in InAppBrowser to the local page, scrolled to the top.

    <p/>
    <div class="btn large openAnchor2">Anchor2</div>
    Expected result: open successfully in InAppBrowser to the local page, scrolled to the beginning of the tall div with border.
    
    <p/>
    <div class="backBtn">Back</div>

  </body>
</html>
